로딩 중이에요... 🐣
[코담]
웹개발·실전 프로젝트·AI까지, 파이썬·장고의 모든것을 담아낸 강의와 개발 노트
12 앱 만들기 (2부) | ✅ 편저: 코담 운영자
Django 튜토리얼 #12 - 앱 만들기 (2부)
🔗 소스
1. 강의 목표
- 11강에서 작성한 모델과 폼을 기반으로 실제 CRUD 뷰 구현
- 각 View 함수 정의 및 연결된 템플릿 구성
- 제품 생성, 조회, 수정, 삭제 기능 완성
2. 디렉토리 구조 재확인
invApp/
├── templates/
│ └── invApp/
│ ├── home.html
│ ├── layout.html
│ ├── product_confirm_delete.html
│ ├── product_form.html
│ └── product_list.html
├── views.py
├── urls.py
├── forms.py
├── models.py
...
3. CRUD 뷰 함수 구성 (invApp/views.py)
11강에서 만든 모델과 폼을 활용하여 5가지 뷰 함수 구성: 홈, 생성, 조회, 수정, 삭제 각 함수는 다음과 같은 역할을 담당합니다:
home_view
: 홈 화면 표시product_create_view
: 신규 상품 등록product_list_view
: 등록된 상품 전체 목록 출력product_update_view
: 특정 상품 수정product_delete_view
: 특정 상품 삭제 확인 및 실행
11강에서 만든 모델과 폼을 활용하여 5가지 뷰 함수 구성: 홈, 생성, 조회, 수정, 삭제
from django.shortcuts import render, redirect
from .forms import ProductForm
from .models import Product
# 홈 화면 뷰
def home_view(request):
return render(request, 'invApp/home.html')
# 제품 생성 뷰
def product_create_view(request):
form = ProductForm()
if request.method == 'POST':
form = ProductForm(request.POST)
if form.is_valid():
form.save()
return redirect('product_list')
return render(request, 'invApp/product_form.html', {'form': form})
# 제품 목록 조회 뷰
def product_list_view(request):
products = Product.objects.all()
return render(request, 'invApp/product_list.html', {'products': products})
# 제품 수정 뷰
def product_update_view(request, product_id):
product = Product.objects.get(product_id=product_id)
form = ProductForm(instance=product)
if request.method == "POST":
form = ProductForm(request.POST, instance=product)
if form.is_valid():
form.save()
return redirect('product_list')
return render(request, 'invApp/product_form.html', {'form': form})
# 제품 삭제 뷰
def product_delete_view(request, product_id):
product = Product.objects.get(product_id=product_id)
if request.method == 'POST':
product.delete()
return redirect('product_list')
return render(request, 'invApp/product_confirm_delete.html', {'product': product})
4. URL 패턴 구성 (invApp/urls.py)
각 뷰와 연결되는 URL 경로 지정
from django.urls import path
from . import views
urlpatterns = [
path('', views.home_view, name="home"),
path('create/', views.product_create_view, name="product_create"),
path('list/', views.product_list_view, name="product_list"),
path('update/<int:product_id>/', views.product_update_view, name="product_update"),
path('delete/<int:product_id>/', views.product_delete_view, name="product_delete"),
]
5. 템플릿 구성 요약 (invApp/templates/invApp/)
layout.html
: 전체 레이아웃 공통 템플릿home.html
: 메인 페이지, 버튼과 소개 문구 포함product_form.html
: 제품 생성 및 수정에 사용되는 폼product_list.html
: 전체 제품 목록 테이블로 출력product_confirm_delete.html
: 삭제 확인 페이지
6. 실습 정리
사용자는 상품을 등록(Create)하고, 전체 목록을 조회(Read)하며, 개별 상품 정보를 수정(Update)하거나 삭제(Delete)할 수 있는 전반적인 CRUD 흐름을 실습을 통해 이해하게 됩니다.
- CRUD 흐름 전체 구현 완료
- 각 View는 forms.py와 models.py 기반으로 작동
- Bootstrap 기반 템플릿으로 실제 동작 확인 가능
다음 강의 예고
- 13강에서는 UI 디자인 개선 및 Bootstrap 구성 요소를 활용해 더 보기 좋게 개선합니다.